#!/usr/bin/python3

import math

"""

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型得值，将重新分配内存空间。

"""
# 以下实例在变量赋值时 Number 对象将被创建
var1 = 1
var2 = 10
var3 = 100
# 您也可以使用del语句删除一些数字对象的引用。
del var1
del var3, var2
"""
Python 支持三种不同的数值类型：
整型(Int) - 通常被称为是整型或整数，是正或负整数，不带小数点。Python3 整型是没有限制大小的，可以当作 Long 类型使用，所以 Python3 没有 Python2 的 Long 类型。
浮点型(float) - 浮点型由整数部分与小数部分组成，浮点型也可以使用科学计数法表示（2.5e2 = 2.5 x 102 = 250）
复数( (complex)) - 复数由实数部分和虚数部分构成，可以用a + bj,或者complex(a,b)表示， 复数的实部a和虚部b都是浮点型。


int	        float	        complex
10	        0.0	            3.14j
100	        15.20	        45.j
-786	    -21.9	        9.322e-36j
080	        32.3+e18	    .876j
-0490	    -90.	        -.6545+0J
-0x260	    -32.54e100	    3e+26J
0x69	    70.2-E12	    4.53e-7j
"""

print(type(.9))

'''
在交互模式中，最后被输出的表达式结果被赋值给变量 _ 。例如：

>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
'''

# inner (内置)
# abs(x)	返回数字的绝对值，如abs(-10) 返回 10
# max(x1, x2,...)	返回给定参数的最大值，参数可以为序列。
# min(x1, x2,...)	返回给定参数的最小值，参数可以为序列。

# import math（导入 math 模块）
# math.ceil(x)	返回数字的上入整数，如math.ceil(4.1) 返回 5
# math.floor(x)	返回数字的下舍整数，如math.floor(4.9)返回 4
# math.exp(x)	返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
# math.fabs(x)	返回数字的绝对值，如math.fabs(-10) 返回10.0
#   fabs() 函数类似于 abs() 函数，但是他有两点区别:
#       abs() 是内置函数。 fabs() 函数在 math 模块中定义。
#       fabs() 函数只对浮点型跟整型数值有效。 abs() 还可以运用在复数中。
# math.log(x)	如math.log(math.e)返回1.0,math.log(100,10)返回2.0
# math.log10(x)	返回以10为基数的x的对数，如math.log10(100)返回 2.0
print("-----math.modf------")
# math.modf(x)	返回x的整数部分与小数部分，两部分的数值符号与x相同，整数部分以浮点型表示。
print("math.modf(100.12) : ", math.modf(100.12))
print("math.modf(100.72) : ", math.modf(100.72))
print("math.modf(119) : ", math.modf(119))
print("math.modf(math.pi) : ", math.modf(math.pi))
print("-----math.pow------")
# pow(x, y):int	x**y 运算后的值。
# math.pow(x, y):float	x**y 运算后的值。
print("math.pow(100, 2) : ", math.pow(100, 2))
print("pow(100, 2) : ", pow(100, 2))
print("math.pow(100, -2) : ", math.pow(100, -2))
print("math.pow(2, 4) : ", math.pow(2, 4))
print("math.pow(3, 0) : ", math.pow(3, 0))

print("-----round------")
# round(x [,n])	返回浮点数x的四舍五入值，如给出n值，则代表舍入到小数点后的位数。
print("round(70.23456) : ", round(70.23456))
print("round(56.659,1) : ", round(56.659, 1))
print("round(80.264, 2) : ", round(80.264, 2))
print("round(100.000056, 3) : ", round(100.000056, 3))
print("round(-100.000056, 3) : ", round(-100.000056, 3))

print("-----sqrt------")
# math.sqrt(x)	返回数字x的平方根。
print("math.sqrt(100) : ", math.sqrt(100))
print("math.sqrt(7) : ", math.sqrt(7))
print("math.sqrt(math.pi) : ", math.sqrt(math.pi))

"""
随机数函数
随机数可以用于数学，游戏，安全等领域中，还经常被嵌入到算法中，用以提高算法效率，并提高程序的安全性
choice(seq)	从序列的元素中随机挑选一个元素，比如random.choice(range(10))，从0到9中随机挑选一个整数。
randrange ([start,] stop [,step])	从指定范围内，按指定基数递增的集合中获取一个随机数，基数缺省值为1
random()	随机生成下一个实数，它在[0,1)范围内。
seed([x])	改变随机数生成器的种子seed。如果你不了解其原理，你不必特别去设定seed，Python会帮你选择seed。
shuffle(lst)	将序列的所有元素随机排序
uniform(x, y)	随机生成下一个实数，它在[x,y]范围内。
"""
